package com.ruoyi.verify.mapper;

import com.ruoyi.verify.domain.VerifyQuestionnaire;
import com.ruoyi.verify.domain.VerifyTemplate;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;

/**
 * 现场审核模板Mapper接口
 *
 * @author ygx
 * @date 2020-10-14
 */
public interface VerifyTemplateMapper
{
    /**
     * 查询现场审核模板
     *
     * @param templateid 现场审核模板ID
     * @return 现场审核模板
     */
    public List<VerifyTemplate> selectVerifyTemplateById(String templateid);

    /**
     * 查询现场审核模板
     *
     * @param templateid 现场审核模板ID
     * @return 现场审核模板
     */
    public VerifyTemplate selectVerifyTemplateById(@Param("templateid") String templateid,String from);

    /**
     * 查询现场审核模板列表
     *
     * @param verifyTemplate 现场审核模板
     * @return 现场审核模板集合
     */
    public List<VerifyTemplate> selectVerifyTemplateList(VerifyTemplate verifyTemplate);

    /**
     * 新增现场审核模板
     *
     * @param verifyTemplate 现场审核模板
     * @return 结果
     */
    public int insertVerifyTemplate(VerifyTemplate verifyTemplate);

    /**
     * 修改现场审核模板
     *
     * @param verifyTemplate 现场审核模板
     * @return 结果
     */
    public int updateVerifyTemplate(VerifyTemplate verifyTemplate);

    /**
     * 修改现场审核模板状态
     *
     * @param verifyTemplate 现场审核模板
     * @return 结果
     */
    public int updateTemplateStatus(VerifyTemplate verifyTemplate);

    /**
     * 删除现场审核模板
     *
     * @param templateid 现场审核模板ID
     * @return 结果
     */
    public int deleteVerifyTemplateById(String templateid);

    /**
     * 批量删除现场审核模板
     *
     * @param templateids 需要删除的数据ID
     * @return 结果
     */
    public int deleteVerifyTemplateByIds(String[] templateids);

    /**
     * 通过用户id获取用户名（昵称）
     *
     * @param
     * @return 结果
     */
    public String selectUserNameById(String userId);

    /**
     * 获取全部的模板类型
     * @return
     */
    public List<Map<String,String>> selectType();

    /**
     * 检查模板是否存在
     * @return
     */
    public boolean checkType(String type);

    /**
     * 检查状态是否存在
     * @return
     */
    public boolean checkStatus(@Param("status") String status,@Param("templateId")  String templateId);

    /**
     * 检查同一类型、公司是否已存在（新增或生效状态的）
     * @return
     */
    public String checkTempCode(@Param("companycode") String companycode,@Param("type") String type,@Param("templateid") String templateid);



    /**
     * 通过模板id获取模板code
     *
     * @param
     * @return 结果
     */
    public String selectTemplateCode(String templateId);

    /**
     * 通过公司code字符串获取公司name字符串
     *
     * @param
     * @return 结果
     */
    public String selectCompanyName(String companycode);

    /**
     * 通过模板id获取该模板所有模块的名称和id
     *
     * @param
     * @return 结果
     */
    public List<Map<String,String>> selectVerifyid(String templateid);

    /**
     * 通过计划id获取该计划包含的模块id
     *
     * @param
     * @return 结果
     */
    public List<String> selectPlanVerifyid(@Param("planid") String planid);






    /**
     * 通过计划id/用户id 获取该计划包含的模块id
     *
     * @param templateid
     * @param loguser
     * @return 结果
     */
    public List<String> selectPlanVerifyid(@Param("planid") String planid, @Param("loguser") String loguser);

    /**
     * 通过parentid获取模块id
     *
     * @param
     * @return 结果
     */
    public List<String> selectVerifyidByParentid(@Param("parentids") String parentids);

    /**
     * 根据计划id获取绑定的模板名
     * @param planid
     * @return
     */
    public String selectTemplateNameByPlanid(String planid);

    /**
     * 根据计划id获取绑定的模板名
     * @param planid
     * @return
     */
    public String selectTemplateidByPlanid(String planid);

    /**
     * 根据模板id获取绑定的模板名
     * @param planid
     * @return
     */
    public String selectTemplateNameByTemplateid(String templateid);

    /**
     * 根据模板id获取审核类型
     *
     */
    public String selectVerifyTypeByTemplateid(String templateid);

    /**
     * 判断模板内容是否修改
     * @param templateid 模板id  content 原内容
     * @return
     */
    public boolean checkContent(@Param("templateid") String templateid ,@Param("content") String content);

    /**
     * 根据模板id和公司字符串判断更新时是否更新了公司绑定关系
     * @param templateid
     * @param companycode
     * @return
     */
    public boolean checkCompanyCode(@Param("templateid") String templateid, @Param("companycode") String companycode);

    /**
     * 根据问卷id更新问卷打分、打分人、备注
     * @param verifyTemplateContent
     * @return
     */
    public int updateQuestionnaire(VerifyQuestionnaire VerifyQuestionnaire);

    /**
     * 根据模板id获取模板等级
     * @param templateid
     * @return level upperscore lowerscore
     */
    public List<HashMap<String, String>> selectLevel(String templateid);

    /**
     * 根据模板id获取最低的模板等级
     * @param templateid
     * @return level
     */
    public String selectLowerLevel(String templateid);


    /**
     * 根据模板id查询模块
     */
    public List<VerifyTemplate> selectVerifyTemplateClass(@Param("templateid") String templateid);

    /**
     * 通过模板id获取该模板所有模块的名称和id
     *
     * @param
     * @return 结果
     */
    public List<VerifyTemplate> selectVerifyTemplateClassNew(@Param("verifytype") String verifytype,@Param("factorycode") String factorycode);

    /**
     * 通过计划ID查询 历史问卷的所有模块
     */
    public List<VerifyTemplate> selectHistoryVerifyTemplateClassByPlanid(@Param("planid") Long planid);



}
